package cn.tedu.tmall.admin.mall.controller;

import cn.tedu.tmall.admin.mall.pojo.param.MallGoodsAddParam;
import cn.tedu.tmall.admin.mall.pojo.vo.MallGoodsDetailVO;
import cn.tedu.tmall.admin.mall.pojo.vo.MallGoodsVO;
import cn.tedu.tmall.admin.mall.service.IMallGoodsService;
import cn.tedu.tmall.common.web.JsonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 控制层-商城商品
 */
@Api(tags = "商品管理")
@Slf4j
@RestController
@RequestMapping("/mall/goods")
public class MallGoodsController {
    /**
     * 1 增加商品（商品需要挂到类别上）
     * 2 通过类别查询商品列表
     * 3 通过商品id查询商品详情
     */
    @Autowired
    private IMallGoodsService mallGoodsService;

    /**
     * 新增商品
     */
    @ApiOperation("新增商品")
    @PostMapping("/add")
    public JsonResult addGoods(@Validated MallGoodsAddParam goodsAddParam){
        log.debug("Controller-新增商品-入参：{}", goodsAddParam);
        mallGoodsService.addGoods(goodsAddParam);
        log.debug("Controller-新增商品成功");
        return JsonResult.ok();
    }

    /**
     * 按类别id获取商品列表
     */
    @ApiOperation("获取商品列表")
    @GetMapping("/list/{categoryId}")
    public JsonResult listGoods(@PathVariable Long categoryId){
        log.debug("Controller-获取商品列表-入参：{}", categoryId);
        List<MallGoodsVO> list = mallGoodsService.listGoods(categoryId);
        log.debug("Controller-获取商品列表成功");
        return JsonResult.ok(list);
    }

    /**
     * 获取商品详情
     */
    @ApiOperation("获取商品详情")
    @GetMapping("/detail/{goodsId}")
    public JsonResult detail(@PathVariable Long goodsId){
        log.debug("Controller-获取商品详情-入参：{}", goodsId);
        MallGoodsDetailVO detailVO = mallGoodsService.detail(goodsId);
        log.debug("Controller-获取商品详情成功");
        return JsonResult.ok(detailVO);
    }

}
